package com.comleader.operator.common.util;

import java.util.List;

import com.comleader.operator.common.constant.DictConstant;
import com.comleader.operator.pojo.entity.DictDataEntity;
import com.github.benmanes.caffeine.cache.Cache;

import cn.hutool.extra.spring.SpringUtil;

/**
 * @Description 字典缓存类
 * @Auhtor 连新景
 * @Date 2024/08/03 14:35
 */
public class DictCacheUtil {

    public static Cache<String, Object> cache = SpringUtil.getBean(Cache.class);

    /**
     * 设置字典缓存
     * 
     * @param key 参数键
     * @param dictDatas 字典数据列表
     */
    public static void setDictCache(String key, List<DictDataEntity> dictDatas) {
        cache.put(getCacheKey(key), dictDatas);
    }

    /**
     * 获取字典缓存
     * 
     * @param key 参数键
     * @return dictDatas 字典数据列表
     */
    public static List<DictDataEntity> getDictCache(String key) {
        Object cacheObj = cache.getIfPresent(getCacheKey(key));
        if (cacheObj != null) {
            List<DictDataEntity> dictDataList = (List<DictDataEntity>)cacheObj;
            return dictDataList;
        }
        return null;
    }

    /**
     * @Description 删除指定字典
     * @Auhtor 连新景
     * @Date 2024/08/03 15:29
     * @param key
     */
    public static void deleteCache(String key) {
        cache.invalidate(getCacheKey(key));
    }

    /**
     * 设置cache key
     * 
     * @param key 参数键
     * @return 缓存键key
     */
    public static String getCacheKey(String key) {
        return DictConstant.DICT_KEY + key;
    }

}
